package ace.j2se.l1;

import java.io.IOException;
import java.io.PrintStream;
import java.util.EnumMap;

/**
 * @Title:Status.java
 * @Package basic.enumDemo
 * @Description:TODO
 * @Author Kevin Guan E-mail:gjybst@163.com
 * @date Aug 25, 20114:35:05 PM
 * @Version
 * 
 */
/*
 * 如果只有单独一个值（例如，鞋的最大尺寸，或者笼子中能装猴子的最大数目）， 则还是把这个任务留给常量吧。
 * 但是，如果定义了一组值，而这些值中的任何一个都可以用于特定的数据类型，那么将枚举用在这个地方最适合不过。
 */
public class StatusEnumTest {
	public void testEnumMap(PrintStream out) throws IOException {
		// Create a map with the key and a String message
		EnumMap<Status, String> antMessages = new EnumMap<Status, String>(
				Status.class);
		// Initialize the map
		antMessages.put(Status.INITIALIZING, "Initializing Ant...");
		antMessages.put(Status.COMPILING, "Compiling Java classes...");
		antMessages.put(Status.COPYING, "Copying files...");
		antMessages.put(Status.JARRING, "JARring up files...");
		antMessages.put(Status.ZIPPING, "ZIPping up files...");
		antMessages.put(Status.DONE, "Build complete.");
		antMessages.put(Status.ERROR, "Error occurred.");
		// Iterate and print messages
		for (Status status : Status.values()) {
			out.println("For status " + status + ", message is: "
					+ antMessages.get(status));
		}
	}

	public static void main(String[] args) {
		StatusEnumTest statusTest = new StatusEnumTest();
		try {
			statusTest.testEnumMap(System.out);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

enum Status {
	INITIALIZING, COMPILING, COPYING, JARRING, ZIPPING, DONE, ERROR
}
